home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2002 November / SGI Freeware 2002 November - Disc 2.iso / dist / fw_glimpse.idb / usr / freeware / src / glimpse-3.0 / agrep / compat.c.z / compat.c
C/C++ Source or Header  |  1997-09-09  |  2KB  |  107 lines

  1. /* Copyright (c) 1994 Sun Wu, Udi Manber, Burra Gopal.  All Rights Reserved. */
  2. /* test the conflicts between options */
  3. #include <stdio.h>
  4. #include "agrep.h"
  5.  
  6. extern int D;
  7. extern int FILENAMEONLY, APPROX, PAT_FILE, PAT_BUFFER, MULTI_OUTPUT, COUNT, INVERSE, BESTMATCH;
  8. extern FILEOUT;
  9. extern REGEX;
  10. extern DELIMITER;
  11. extern WHOLELINE;
  12. extern LINENUM;
  13. extern I, S, DD;
  14. extern JUMP;
  15. extern char Progname[32];
  16. extern int agrep_initialfd;
  17. extern int EXITONERROR;
  18. extern int errno;
  19.  
  20. int
  21. compat()
  22. {
  23.     if(BESTMATCH)  if(COUNT || FILENAMEONLY || APPROX || PAT_FILE) {
  24.         BESTMATCH = 0;
  25.         fprintf(stderr, "%s: -B option ignored when -c, -l, -f, or -# is on\n", Progname);
  26.     }
  27.     if (COUNT && LINENUM) {
  28.         LINENUM = 0;
  29.         fprintf(stderr, "%s: -n option ignored with -c\n", Progname);
  30.     }
  31.     if(PAT_FILE || PAT_BUFFER)   {
  32.         if(APPROX && (D > 0))  {
  33.             fprintf(stderr, "%s: approximate matching is not supported with -f option\n", Progname);
  34.         }
  35.         /*
  36.                 if(INVERSE) {
  37.                     fprintf(stderr, "%s: -f and -v are not compatible\n", Progname);
  38.                     if (!EXITONERROR) {
  39.                         errno = AGREP_ERROR;
  40.                         return -1;
  41.                     }
  42.                     else exit(2);
  43.                 }
  44.         */
  45.         if(LINENUM) {
  46.             fprintf(stderr, "%s: -f and -n are not compatible\n", Progname);
  47.             if (!EXITONERROR) {
  48.                 errno = AGREP_ERROR;
  49.                 return -1;
  50.             }
  51.             else exit(2);
  52.         }
  53.         /*
  54.         if(DELIMITER) {
  55.             fprintf(stderr, "%s: -f and -d are not compatible\n", Progname);
  56.             if (!EXITONERROR) {
  57.                 errno = AGREP_ERROR;
  58.                 return -1;
  59.             }
  60.             else exit(2);
  61.         }
  62.         */
  63.     }
  64.     if (MULTI_OUTPUT && LINENUM) {
  65.         fprintf(stderr, "%s: -M and -n are not compatible\n", Progname);
  66.         if (!EXITONERROR) {
  67.             errno = AGREP_ERROR;
  68.             return -1;
  69.         }
  70.         else exit(2);
  71.     }
  72.     if(JUMP) {
  73.         if(REGEX) {
  74.             fprintf(stderr, "%s: -D#, -I#, or -S# option is ignored for regular expression pattern\n", Progname);
  75.             JUMP = 0;
  76.         }
  77.         if(I == 0 || S == 0 || DD == 0) {
  78.             fprintf(stderr, "%s: the error cost cannot be 0\n", Progname);
  79.             if (!EXITONERROR) {
  80.                 errno = AGREP_ERROR;
  81.                 return -1;
  82.             }
  83.             else exit(2);
  84.         }
  85.     }
  86.     if(DELIMITER) {
  87.         if(WHOLELINE) {
  88.             fprintf(stderr, "%s: -d and -x are not compatible\n", Progname);
  89.             if (!EXITONERROR) {
  90.                 errno = AGREP_ERROR;
  91.                 return -1;
  92.             }
  93.             else exit(2);
  94.         }
  95.     }
  96.     if (INVERSE && (PAT_FILE || PAT_BUFFER) && MULTI_OUTPUT) {
  97.         fprintf(stderr, "%s: -v and -M are not compatible\n", Progname);
  98.         if (!EXITONERROR) {
  99.             errno = AGREP_ERROR;
  100.             return -1;
  101.         }
  102.         else exit(2);
  103.     }
  104.  
  105.     return 0;
  106. }
  107.